# -*- coding:utf-8 -*-
# 北梦测教育
# 课程咨询加微信：xiaobeiceshi

# 面向对象的方式来进行封装
import jsonpath
import logging

class GetKeywords(object):
    """
    我们要去实现对jsonpath的二次封装
    通过jsonpath来获取返回值
    """

    @staticmethod
    def get_keyword(data,name,index=0):
        """
        获取json数据里面的一个数据
        :param data: 元数据
        :param name: 需要提取的名称
        :param index: 索引，默认是0
        :return: 最终提取的数据
        """
        try:
            result = jsonpath.jsonpath(data,f"$..{name}")[index]
        except Exception as e:
            result =  False
        if result is False:
            logging.error(f"jsonpath提取失败: 原本提取的元数据是{data}，提取的值是{name}")
        else:
            return result

    @staticmethod
    def get_keywords(data, name):
        """
        获取提取的多个数据
        :param data: 元数据
        :param name: 需要提取的名称
        :return: 提取出来的数据列表
        """
        try:
            result = jsonpath.jsonpath(data, f"$..{name}")
        except Exception as e:
            result = False
        if result is False:
            logging.error(f"jsonpath提取失败: 原本提取的元数据是{data}，提取的值是{name}")
        else:
            return result